Cloudflare 的 5秒盾(Under Attack Mode)是网站防护的常见手段,通过 JavaScript 挑战验证访客真实性。很多网站会使用Cloudflare提供安全服务,导致爬虫的时候显示403状态。
一、解决方案及代码示例
1. 使用 cloudscraper 库
原理:模拟 Cloudflare 预期的请求特征
1 | import cloudscraper |
2. 使用 curl_cffi 库
优势:支持多浏览器指纹模拟
1 | from curl_cffi import requests |
3. 第三方 API 服务
推荐服务:
- ScrapingBee(自带代理轮转)
- ScraperAPI
- ZenRows
1 | import requests |
4. FlareSolverr 服务
架构:基于 Puppeteer 的中间件服务
部署步骤:
1 | docker run -d \ |
调用示例:
1 | import requests |
二、方案对比分析
方案 | 执行速度 | 维护成本 | 隐匿性 | 适用场景 |
---|---|---|---|---|
cloudscraper | ★★★★ | 低 | 中 | 中小规模常规采集 |
curl_cffi | ★★★★★ | 低 | 高 | 需要最新指纹场景 |
第三方API | ★★★ | 中 | 高 | 企业级高频采集 |
FlareSolverr | ★★ | 高 | 极高 | 复杂JS验证场景 |
三、对抗升级建议
- IP轮换策略:结合住宅代理使用(推荐 BrightData)
- 指纹随机化:定期更换 User-Agent/TLS 指纹
- 请求限速:设置 3-10 秒随机延迟
- 头信息校验:携带完整 Accept-Encoding/Cookie 等头